Method and apparatus for providing data to streaming application in adaptive streaming service

ABSTRACT

According to one embodiment of the present disclosure, a method for providing data to a streaming application by an electronic device in an adaptive streaming service comprises the operations of: determining a data provision time interval, that is, the time interval during which each of multiple pieces of data constituting a streaming content is provided to a streaming application through a proxy module; downloading first data, which is a part of the streaming content, from an external apparatus and storing the same; and when the streaming application requests the first data, providing the stored first data to the streaming application through the proxy module on the basis of the determined data provision time interval.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a 371 of International Application No. PCT/KR2017/010316 filed Sep. 20, 2017, which claims priority to Korean Patent Application No. 10-2016-0119794 filed Sep. 20, 2016, the disclosures of which are herein incorporated by reference in their entirety.

BACKGROUND 1. Field

The present disclosure relates to adaptive streaming service technology and, more particularly, to a method and apparatus for providing data constituting streaming content to a streaming application through a proxy module in an adaptive streaming service.

2. Description of Related Art

A streaming service may be used for a video-on-demand (VOD) service or an audio-on-demand (AOD) service. This streaming service adapts a technique of performing real-time playback of a video or audio file while a terminal downloads the file from a server, rather than performing playback after downloading the entire file. Thus, even before the entire file is received, the terminal starts to represent data through a browser or plug-in of the terminal. Therefore, for a user, there is an advantage that the playback starts early and the capacity of a hard disk drive is hardly affected. Also, for an operator, there is an advantage that the charge can be easily imposed and the illegal copying of content can be minimized.

The streaming service has been activated with the introduction of wired/wireless broadband communication that provides a fast transmission speed, such as an asymmetric digital subscriber line (ADSL), a very high-data rate digital subscriber line (VDSL), a power line communication (PLC), an optical communication, and 2.5G or 3G mobile communication. The reason is that, in order to enable the streaming service, a server for transmitting data and an electronic device for receiving data should continuously transmit and receive a large amount of multimedia data and also should be able to provide the data to a streaming application that reproduces the data as video or audio.

However, as multimedia data including video or audio gradually has high resolution and high sound quality, the data amount is also gradually increasing. In addition, due to the characteristics of Internet communication lines, the transmission speed is becoming variable depending on usage environments such as a peak time zone crowded with many users. As such, no guarantee of a transmission speed in some environments often causes a poor playback of video and audio due to the irregularity of a transmission speed of data. Assuming, for example, that there is content to be reproduced only when data of about 16 kilobits (Kb) per second is input, a discontinuity phenomenon occurs during the playback when the transmission speed provided by the communication line varies between 15 kbps and 18 kbps. A buffering technique is a method to reduce this discontinuity. For example, if playback data of 10 seconds is stored in advance in a buffer at the time of starting the streaming service and then the playback is started, the buffered data of 10 seconds can significantly reduce a discontinuity phenomenon even though input data becomes smaller than current playback data at a certain time point.

As described above, because a wireless network is inherently in an unstable state, the buffering technique of storing certain data in advance is very important when an electronic device provides a streaming service. Accordingly, in order to adaptively provide the streaming service based on the state of the wireless network, it is required to effectively support the buffering technique and thereby provide data to a streaming application.

When data is provided to a streaming application using a buffering technique, the streaming application may determine a network state between an electronic device and an external device transmitting streaming content, based on a provision speed of buffered data instead of an actual network state.

In case of determining the network state on the basis of the provision speed of the buffered data, the streaming application may fail to accurately determine the actual network state. Thus, the streaming application may unnecessarily request data, thereby inefficiently using network resources.

Accordingly, it is an object of the present disclosure to enable a streaming application to reliably request data in an adaptive streaming service and enable an electronic device to continuously provide high-resolution streaming content in response to the request, thereby improving the quality of experience (QoE) of a user.

In addition, the technical problem to be solved in the present disclosure is not limited to the above, and any other technical problem which is not mentioned can be clearly understood from the following description by a person having ordinary knowledge in the technical field to which the present disclosure belongs.

SUMMARY

According to an embodiment of the present invention, a method for providing data to a streaming application in an adaptive streaming service comprises operations of determining a data provision time interval which is an interval of time at which each of a plurality of data constituting streaming content is provided to a streaming application through a proxy module; downloading and storing first data, which is a fragment of the streaming content, from an external device; and when the streaming application requests the first data, providing the stored first data to the streaming application through the proxy module, based on the determined data provision time interval.

According to another embodiment of the present invention, an electronic device for providing data to a streaming application in an adaptive streaming service comprises a communication unit configured to download, from an external device, first data which is a fragment of streaming content; a storage unit configured to store the downloaded first data; and a controller configured to determine a data provision time interval which is an interval of time at which each of a plurality of data constituting streaming content is provided to a streaming application through a proxy module, and configured to, when the streaming application requests the first data, provide the stored first data to the streaming application through the proxy module, based on the determined data provision time interval.

According to still another embodiment of the present invention, a computer-readable non-transitory recording medium stores a program that enables an electronic device to perform, in an adaptive streaming service, operations of determining a data provision time interval which is an interval of time at which each of a plurality of data constituting streaming content is provided to a streaming application through a proxy module; downloading and storing first data, which is a fragment of the streaming content, from an external device; and when the streaming application requests the first data, providing the stored first data to the streaming application through the proxy module, based on the determined data provision time interval.

According to an embodiment of the present disclosure, in the adaptive streaming service, the electronic device provides the streaming application with the data that constitutes the streaming content, based on the data provision time interval calculated in advance, and thereby the streaming application can determine the network state continuously and reliably.

Accordingly, the data request rate of the streaming application decreases, the resources of the electronic device can be efficiently used, and the average resolution of the data can be increased as compared with the conventional method. That is, the quality of experience (QoE) of the user receiving the streaming content can be greatly improved.

In addition, effects obtained or predicted by embodiments of the present disclosure will be explicitly or implicitly disclosed in the detailed description of the embodiments. For example, various effects to be predicted according to embodiments of the present disclosure will be disclosed in the following detailed description.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram illustrating an example of a streaming system for providing a streaming service according to an embodiment of the present disclosure.

FIG. 2 is a diagram illustrating a process of providing data to a streaming application according to an embodiment of the present disclosure.

FIGS. 3A and 3B illustrate examples of syntaxes for providing data to a streaming application according to an embodiment of the present disclosure.

FIGS. 4 and 5 are diagrams showing effects in case of providing data to a streaming application according to an embodiment of the present disclosure.

FIG. 6 is a block diagram illustrating a configuration of an electronic device for providing data to a streaming application according to an embodiment of the present disclosure.

FIGS. 7 and 8 are flow diagrams illustrating a method for providing data to a streaming application according to embodiments of the present disclosure.

Throughout the drawings, it should be noted that like reference numerals are used to illustrate the same or similar elements, features, and structures.

DETAILED DESCRIPTION

Now, embodiments of the present disclosure will be described in detail with reference to the accompanying drawings. In the following description of this disclosure, detailed description of known functions and configurations will be omitted when it may make the subject matter of the present disclosure rather unclear. The terms used herein are defined in consideration of functions in one embodiment of the present disclosure, and may be changed according to the intention of the user, the operator, or the like. Therefore, the definition should be based on the contents throughout this specification.

In addition, singular expressions such as “a/an” and “the” may include plural expressions unless the context clearly dictates otherwise. For example, “a component surface” includes one or more component surfaces.

In addition, expressions including ordinal numbers such as “first” and “second” may indicate various elements. The above expressions do not limit the sequence or importance of the elements, and are used merely for the purpose to distinguish one element from the others. For example, without departing from the scope of the present disclosure, a first element may be referred to as a second element, and similarly a second element may be also referred to as a first element. The term “and/or” includes a combination of a plurality of specified items or any of a plurality of specified items.

Terms used herein may be merely to describe a certain embodiment, and may not be intended to limit the disclosure. The singular expressions may include plural expressions unless the context clearly dictates otherwise. In this disclosure, the terms such as “comprise”, “include”, and “have” denote the presence of stated elements, components, operations, functions, features, and the like, but do not exclude the presence of or a possibility of addition of one or more other elements, components, operations, functions, features, and the like.

In addition, the phrases “associated with” and “associated therewith,” as well as derivatives thereof, may mean to include, be included within, interconnect with, contain, be contained within, connect to or with, couple to or with, be communicable with, cooperate with, interleave, juxtapose, be proximate to, be bound to or with, have, have a property of, or the like.

When a first element is referred to as being “connected” or “coupled” (operatively or communicatively) to a second element, it may mean that the first element is connected or coupled directly to the second element or indirectly through any other element (e.g., a third element).

Terms used herein, including technical or scientific terms, may have the same meaning as commonly understood by those skilled in the art. Some terms defined in a normal dictionary may be interpreted as having the same or similar meaning as the contextual meanings in the related art. Certain terms are not to be construed as an ideal or overly formal detect unless expressly defined to the contrary herein. In some cases, the terms defined herein cannot be construed to exclude embodiments of the present disclosure.

An electronic device according to various embodiments of this disclosure may include at least one of a smart phone, a tablet personal computer (PC), a mobile phone, a video phone, an e-book reader, a desktop PC, a laptop PC, a netbook computer, a workstation, a server, a personal digital assistant (PDA), a portable multimedia player (PMP), an MP3 player, a portable medical device, a digital camera, or a wearable device. According to various embodiments, the wearable device may include at least one of an accessory-type device (e.g., a watch, a ring, a bracelet, an anklet, a necklace, glasses, a contact lens, or a head-mounted device (HMD), a fabric- or cloth-type device (e.g., electronic cloth), a body-attached type device (e.g., a skin pad or tattoo), or a body-implemented type circuit. In some embodiments, the electronic device may be home appliance. For example, the home appliance may include at least one of a TV, a digital video disk (DVD) player, audio equipment, a refrigerator, an air conditioner, a vacuum cleaner, an oven, a microwave, a washing machine, an air cleaner, a set-top box, a home automation control panel, a security control panel, a media box (e.g., Samsung HomeSync™, Apple TV™, or Google TV™), a game console (e.g., Xbox™, PlayStation™), an electronic dictionary, an electronic key, a camcorder, or an electronic picture frame.

In another embodiment, the electronic device may include at least one of a medical device (e.g., portable medical measuring equipment (e.g., a blood sugar meter, a heart rate meter, a blood pressure meter, a clinical thermometer, etc.), a magnetic resonance angiography (MRA), a magnetic resonance imaging (MRI), a computed tomography (CT), an ultrasonography, etc.), a navigation device, a global navigation satellite system (GNSS), an event data recorder (EDR), a flight data recorder (FDR), a car infotainment device, electronic equipment for ship (e.g., a marine navigation system, a gyrocompass, etc.), avionics, security equipment, a car head unit, an industrial or home robot, an automated teller machine (ATM), a point of sales (POS), or a device for internet of things (IoT) (e.g., a bulb, a sensor, a sprinkler, a fire alarm, a thermostat, a streetlight, a toaster, athletic equipment, a hot-water tank, a heater, a boiler, etc.). In a certain embodiment, the electronic device may be include at least one of furniture, a part of a building/construction or car, an electronic board, an electronic signature receiving device, a projector, or various measuring instruments (e.g., a water meter, an electric meter, a gas meter, a wave meter, etc.). In various embodiments, the electronic device may be one of the above-mentioned devices or a combination thereof. The electronic device according to a certain embodiment may be a flexible electronic device. The electronic device according to embodiments disclosed herein is not limited to the above-mentioned devices and may include new electronic devices to be launched with the growth of technology. Hereinafter, an electronic device according to various embodiments will be described. In this disclosure, the term user may refer to a person or a device (e.g., an artificial intelligence device) using the electronic device.

FIG. 1 is a diagram illustrating an example of a streaming system for providing a streaming service according to an embodiment of the present disclosure.

Referring to FIG. 1, the streaming system 1 may include an electronic device 100 for driving a streaming application and an external device 150 for transmitting streaming content to the electronic device 100. The external device 150 may include a streaming server for storing streaming content, a relay server for delivering streaming content, or the like.

The external device 150 may be one of various kinds of the above-described electronic devices, or may be a cloud server composed of a plurality of servers. Because the configuration of the external device 150 is well known, a further explanation will be omitted herein.

In addition, the electronic device 100 and the external device 150 may be connected through a certain network (not shown) or directly. Normally, the electronic device 100 and the external device 150 are connected through the network. Also, when the electronic device 100 is a smart phone, a tablet computer, a smart watch, or the like that uses a wireless communication service, at least a part of the network connecting the electronic device 100 and the external device 150 may include a wireless network. On the other hand, in case of a personal computer or the like that mainly uses a wired network, the network connecting the electronic device 100 and the external device 150 may be entirely composed of a wired network. However, even in case of the personal computer, at least a part of the network connecting the electronic device 100 and the external device 150 may be composed of a wireless network. The electronic device 100 may drive a streaming application 110. The streaming application 110 is a specific application for providing a streaming service such as a VOD service or an AOD service to a user. For example, the streaming application 110 may be Netflix, Hulu, Amazon player, or the like.

Streaming content that is the target of a streaming service may be, for example, video content, audio content, image content, text content, or the like.

The user may request the streaming service by driving the streaming application 110 and selecting the streaming content through a user interface. Then, the streaming application 110 may send a request for data constituting the selected streaming content to the external device 150 through a proxy module 120. In this disclosure, the term data may be a fragment of the streaming content.

At this time, using, for example, a hypertext transfer protocol (HTTP), the electronic device 100 may request data from the external device 150. As a response to the data request, the electronic device 100 may receive data from the external device 150 using HTTP. Here, HTTP used between the electronic device 100 and the external device 150 is an example of a protocol. In embodiments of this disclosure, any other protocol may be applied according to the type of application and the type of data to be transmitted and received.

In order to improve the quality of experience (QoE) of the user, the electronic device 100 may download in advance data by using the proxy module 120, store the downloaded data in a buffer, and provide the stored data to the streaming application in response to a data request. That is, the electronic device 100 may provide data to the streaming application, based on an adaptive streaming service using the proxy module 120.

According to the adaptive streaming service, it is possible to efficiently receive data through the network without changing the configuration and operation of the streaming application and of the external device (e.g., a streaming server) that provides streaming content.

That is, in case of typical scheme, it is necessary to change the configuration and operation of the streaming application and/or of the streaming server in order to improve the performance of receiving data. However, a currently commercialized system disallows changing the configuration and operation of the streaming application and of the streaming server, so that a method of performing effective data buffering cannot be applied.

The adaptive streaming service proposes a method for performing data buffering in the electronic device without changing the configuration and operation of the streaming application and of the streaming server. Therefore, the adaptive streaming service has an advantage of being able to use the configuration and operation of the streaming application and of the streaming server used in the commercialized system as they are.

That is, in the adaptive streaming service, the user's QoE can be greatly improved. For example, an initial buffering time (i.e., time until the playback of streaming data selected by the user is started) is shortened, or a resolution is increased through the provision of a high video quality, thereby improving the user's QoE.

In the adaptive streaming service, the electronic device 100 may pre-fetch data to be transmitted to the streaming application. When the electronic device 100 pre-fetches data, the electronic device 100 may determine parameters for data buffering and, based on the determined parameters, request data from the external device 150. For example, the electronic device 100 may measure the throughput of one session and an available bandwidth and, based on the measured throughput and available bandwidth, determine the number of multi-sessions. In addition, based on a cache hit radio of the streaming application 110, the electronic device 100 may predetermine a buffer size for storing data. Based on such parameters determined for data buffering, the electronic device 100 may send a request for data to the external device 150 via the proxy module 120.

For example, when the streaming application 110 requests first data (1.ts) which is a fragment of streaming content, the proxy module 120 may download the first data (1.ts) via multi-session and then provide the first data to the streaming application while pre-fetching second data (2.ts) which is the next fragment of the streaming content. In this case, when the streaming application 110 requests the second data (2.ts), the proxy module 120 may immediately transmit the pre-fetched second data (2.ts) to the streaming application 110.

In this case, the streaming application 110 may determine a network state between the electronic device 100 and the external device 150, based on a provision speed of data provided from the proxy module 120.

For example, when data is requested from the streaming application 110, the proxy module 120 operates differently depending on whether pre-fetched data exists or not. If the pre-fetched data exists, the proxy module 120 may immediately provide the pre-fetched data to the streamed application 110 in response to the request of the streaming application 110. In this case, the streaming application 110 may determine that the current network state is good.

On the other hand, if there is no pre-fetched data, the proxy module 120 cannot immediately provide data in response to the request of the streaming application 110. That is, the proxy module 120 may request and receive data from the external device 150 and then provide it to the streaming application 110. In this case, because a considerable time delay occurs, the streaming application 110 may determine that the current network state is bad.

That is, in the adaptive streaming service, the streaming application 110 determines a network state, based on a provision rate of data provided from the proxy module 120, rather than determine an actual network state between the electronic device 100 and the external device 150. As such, because the streaming application 110 does not receive data directly from the external device 150 and indirectly receives data through the proxy module 120, the streaming application 110 may erroneously determine the network state. If the streaming application 110 erroneously determines the network state, the fluctuation of the data request of the streaming application 110 may occur severely.

Specifically, when there is pre-fetched data, the streaming application 110 that receives data immediately upon request may determine that the network state is good. Therefore, the streaming application 110 may immediately request the next data. That is, a data request time interval of the streaming application 110 may be short.

On the other hand, when there is no pre-fetched data, the streaming application 110 cannot receive data immediately. In this case, the streaming application 110 may determine that the network state is bad, discard the previously provided data, and request low-resolution data again. Therefore, network resources are consumed, and the electronic device 100 may perform unnecessary processing. In a certain case, heating of the electronic device 100 may be caused.

In order to solve this problem, in the adaptive streaming service, the electronic device 100 may determine in advance a data provision time interval which is an interval of time at which each of a plurality of data constituting the streaming content is provided to the streaming application 110. In addition, when there is a data request from the streaming application 110, the electronic device 100 may delay pre-fetched data corresponding to the request for a given time, based on the predetermined data provision time interval, and transmit the delayed data to the streaming application 110.

In this case, the electronic device 100 may compare the data provision time interval with a time interval at which the streaming application 110 requests data, thereby adjust the delay time, and then transmit data corresponding to the request to the streaming application 110. This means that the electronic device 100 provides data to the streaming application 110 while applying an adaptive delay.

Hereinafter, in the adaptive streaming service, a scheme that the electronic device 100 provides data to the streaming application while applying an adaptive delay will be described in more detail.

FIG. 2 is a diagram illustrating a process in which an electronic device provides streaming content in an adaptive streaming service according to an embodiment of the present disclosure.

Referring to FIG. 2, in the adaptive streaming service, the electronic device 100 may determine a data provision time interval which is an interval of time at which the proxy module 120 provides each of data constituting streaming content to the streaming application 110. In addition, there is a data request from the streaming application 110, the electronic device 100 may provide, based on the determined data provision time interval, data corresponding to the request to the streaming application 110 via the proxy module 120.

For example, the electronic device 100 may determine Constant Delay, which is the data provision time interval, according to Equation 1 below.

$\begin{matrix} {{{Constant}\mspace{14mu}{Delay}} = {\alpha - \frac{{Bitrate}*{Duration}}{proxyBW} + {marginalDelay}}} & \left\lbrack {{Equation}\mspace{14mu} 1} \right\rbrack \end{matrix}$

In Equation 1, a may be an interval of a request time at which the streaming application 110 sends a request for data to the proxy module 120 in a situation where a network state is decided to be stable (i.e., in a situation where a data resolution is kept constant). In this case, α may be experimentally determined and be referred to as a standard time value in this disclosure.

In addition, proxyBW may be a data provision rate when the proxy module 120 provides data to the streaming application 110.

In addition, Bitrate is a bit rate (a transmission rate per time) of data requested to the proxy module 120 by the streaming application 110 and may be a resolution of data.

In addition, Duration may be a data playback time for which data provided to the streaming application 110 by request is actually played.

In addition, marginalDelay is a time for data processing at the electronic device 100 and may be a marginal time experimentally determined.

In this case, the data provision time interval may decrease as the bit rate of data requested to the proxy module 120 by the streaming application 110 increases.

In addition, the data provision time interval may increase as the provision rate of data provided to the streaming application 110 by the proxy module 120 increases.

In addition, the data provision time interval may decrease as the data playback time for which data provided to the streaming application 110 by the proxy module 120 is played increases.

The electronic device 100 may provide the pre-fetched data to the streaming application 110 through the proxy module 120, based on the data provision time interval and the data request time interval of the streaming application 110.

As indicated by reference numeral 210 in FIG. 2, the streaming application 110 may send a request for first data (1.ts) which is a fragment of streaming content to the proxy module 120 and then send a request for second data (2.ts) which is the next fragment of the streaming content to the proxy module 120.

The electronic device 100 may compare a data request time interval, which is a time interval between a request time (t1) for the first data and a request time (t2) for the second data, with the data provision time interval calculated in Equation 1.

If the data request time interval of the streaming application 110 is equal to or greater than the data provision time interval, the electronic device 100 may immediately provide the second data (2.ts) to the streaming application 110 through the proxy module 120. Here, the immediate provision is a process of being distinct from a process 220, and may mean providing the pre-fetched second data (2.ts) to the streaming application 110 via the proxy module 120 without any wait in response to the data request of the streaming application 110.

Specifically, when the data provision time interval (Constant Delay) is determined to be 10 ms, a time interval between the request time (t1) for the first data (1.ts) and the request time (t2) for the second data (2.ts) may be measured as 12 ms as indicated by reference numeral 210. In this case, the electronic device 100 determines that the data request time interval (12 ms) is greater than the data provision time interval (10 ms), and may immediately provide the second data (2.ts) to the streaming application 110 via the proxy module 120.

In another embodiment, as indicated by reference numeral 220, after sending a request for the second data (2.ts) which is a fragment of streaming content to the proxy module 120, the streaming application 110 may send a request for third data (3.ts) which is the next fragment of the streaming content to the proxy module 120.

The electronic device 100 may compare a data request time interval, which is a time interval between a request time (t2) for the second data (2.ts) and a request time (t3) for the third data (3.ts), with the data provision time interval calculated in Equation 1.

If the data request time interval of the streaming application 110 is smaller than the data provision time interval, the electronic device 100 may provide the third data (3.ts) to the streaming application 110 through the proxy module 120 after delay for a predetermined time (or after a wait for a predetermined time). Here, the predetermined time may be a difference in time between the data provision time interval and the data request time interval.

Specifically, when the data providing time interval (Constant Delay) is determined to be 10 ms, a time interval between the request time (t2) for the second data (2.ts) and the request time (t3) for the third data (3.ts) may be measured as 8 ms as indicated by reference numeral 220. In this case, the electronic device 100 determines that the data request time interval (8 ms) is smaller than the data provision time interval (10 ms), and may provide the third data (3.ts) to the streaming application 110 through the proxy module 120 after delay for 2 ms (=10 ms−8 ms) corresponding to a difference in time between both time intervals.

As such, in the adaptive streaming service, the electronic device 100 provides data to the streaming application 110 through the proxy module 120, based on an adaptive delay, so that the streaming application 110 can determine a network state reliably. Therefore, a certain situation in which the fluctuation of the data request of the streaming application 110 occurs severely can be suppressed.

The adaptive delay time may be varied in consideration of the bit rate of data. For example, the higher the bit rate of data is, the shorter the delay time is set to be. Also, the lower the bit rate of data is, the longer the delay time is set to be. Accordingly, in the adaptive streaming service, the streaming application 110 can receive data at a constant rate and determine a network state reliably. In addition, a situation of causing a severe fluctuation to the data request of the streaming application 110 can be prevented.

According to various embodiments, the number of data that the proxy module 120 performs pre-fetch may preferably be one or more.

If there is no data currently being downloaded from the external device by the electronic device 100 at the request of the streaming application 110, the electronic device 100 may perform the pre-fetch of data without limitation of the number. In one example, even after completing the pre-fetch of the first data (1.ts), the electronic device 100 may perform in advance the pre-fetch of the second data (2.ts).

In addition, in the adaptive streaming service, the electronic device 100 may provide data to the streaming application 110 by combining a scheme of providing a plurality of pre-fetched data with a scheme of providing data on the basis of the adaptive delay of this disclosure. For example, while continuously increasing the pre-fetched data, the electronic device 100 may apply the adaptive delay to some of the pre-fetched data in response to a request of the streaming application 110. In this case, as the number of pre-fetches increases, the data resolution provided to the streaming application 110 may be further improved.

FIGS. 3A and 3B illustrate examples of syntaxes for providing data to a streaming application in an adaptive streaming service according to an embodiment of the present disclosure.

In FIG. 3A, getDelay( ) which is a function for determining the data provision time interval may include syntax 301 including a dDelay variable and a delay variable for calculating a value of the data provision time interval.

Referring to the above-described Equation 1, a calculation result using a standard value as a standard time, a getBitrate( ) return value as a bit rate of data, a tsDuration value as a playback time of data, and a proxyBW value as a data provision rate may be input to the dDelay variable.

Next, a value excluding a marDelay value from the calculated dDelay value may be input to the delay variable.

In this case, when the getDelay( ) function is called, the delay value may be provided as the data provision time interval by a return value of the getDelay( ) function.

FIG. 3B shows an example of syntax for delaying a data provision time in the adaptive streaming service in consideration of the data provision time interval.

In syntax 302 of FIG. 3B, a curTime.getTimeInMillis( ) return value, which is the current data request time, and a preTime.getTimeInMillins( ) return value, which is the previous data request time, may be input to a timeDiff variable which is an interval of a data request time at which the streaming application requests data.

Syntax 303 regarding a conditional statement may determine whether to adjust the data provision time interval when transmitting data to the streaming application, using the timeDiff value which is the data request time interval calculated in the above syntax 302.

For example, the conditional statement may determine whether the timeDiff value, which is the data request time interval, is smaller than the constTime value, which is the data provision time interval, returned via the getDelay( ) function in FIG. 3A.

If the data request time interval is smaller than the data provision time interval, the conditional statement may call a delay function, Thread.sleep( ) in syntax 304, and input a specific time for delay of data as a parameter value of the Thread.sleep( ) function. In this case, the specific time may be a value obtained by calculating a difference between the constTime value, which is the data provision time interval returned by the getDelay( ) function, and the timeDiff value which is the data request time interval of the streaming application.

As such, by delaying data to be transmitted to the streaming application for a predetermined time in consideration of both the data provision time interval and the data request time interval, the streaming application receiving the data is allowed to determine a network state reliably.

FIGS. 4 and 5 are diagrams showing effects in case of providing data to a streaming application in the adaptive streaming service according to an embodiment of the present disclosure.

In FIG. 4, the x-axis represents a playback time of streaming content, and the y-axis represents a bit rate of streaming content.

In FIG. 4, graphs 401 and 403 represent changes in data constituting the streaming content according to the playback time.

The graph 401 shows a change in data in a situation where the streaming application receives data from the streaming server according to a typical method. The graph 403 shows a change in data in a situation of providing data to the streaming application through the proxy module by applying the data providing method based on the adaptive delay according to embodiments of this disclosure.

Comparing the graph 401 and the graph 403, it can be seen that in case of the data providing method based on the adaptive delay according to embodiments of this disclosure, the resolution of streaming content is dramatically improved and continuously maintained.

In addition, FIG. 5 is a table showing the average resolution and the data request rate of the streaming application in each of a typical data providing method and the data providing method based on the adaptive delay of this disclosure.

In the table of FIG. 5, a column 501 indicates the average resolution of data and the data request rate when the streaming application provides data received from the streaming server according to the typical method. A column 503 indicates the average resolution of data and the data request rate when the streaming application receives data through the proxy module. A column 505 indicates the average resolution of data and the data request rate when providing data via the proxy module applying the adaptive delay according to embodiments of this disclosure.

Referring to the table of FIG. 5, compared to the typical method in the column 501, the method of providing data by applying the adaptive delay according to embodiments of this disclosure improves the average resolution by about 650% and reduces the data request rate by 25%. That is, it can be seen that, in the method according to embodiments of this disclosure, the streaming application requests data more stably and thus the resources of the electronic device are also efficiently used.

FIG. 6 is a block diagram illustrating a configuration of an electronic device for providing data to a streaming application in the adaptive streaming service according to an embodiment of the present disclosure.

The terms “unit” or “module” used herein refer to an entity for processing at least one function or operation, and may be implemented by hardware, software, or a combination of hardware and software.

The electronic device 100 shown in FIG. 6 includes a controller 101, a communication unit 103, and a storage unit 105.

The communication unit 103 may download data constituting streaming content from an external device that provides the streaming content or relays transmission of the streaming content, and may store the downloaded data in the storage unit 105. The data received through the communication unit 103 may be stored in a buffer region of the storage unit 105. In addition, the communication unit 103 may receive various signals, messages, and data from other entities included in the streaming system under the control of the controller 101.

The communication unit 103 performs functions for receiving a signal through a wireless channel. The communication unit 103 may include a transceiver that transmits and receives a signal. For example, the communication unit 103 may perform reception of a radio frequency (RF) signal, frequency conversion, demodulation, decoding, cyclic prefix (CP) removal, fast Fourier transform (FFT), channel estimation, equalizing, and the like. The communication unit 103 may further perform a function of transmitting a signal processed by the controller 101 to other entity.

The communication unit 103 may include, for example, at least one of a cellular module, a WiFi module, a Bluetooth module, a GNSS module, an NFC module, and an RF module. The cellular module may provide, for example, a streaming service, a voice call, a video call, a messaging service, or an Internet service through a network. The cellular module may include a communication processor (CP). According to an embodiment, at least some (e.g., two or more) of the cellular module, the WiFi module, the Bluetooth module, the GNSS module, and the NFC module may be included in one integrated chip (IC) or IC package.

The storage unit 105 may store programs and various data related to the operation of providing data to the streaming application in the streaming service according to embodiments of this disclosure under the control of the controller 101. In addition, the storage unit 105 may store data constituting streaming content downloaded through the communication unit 103 in a buffer region. Also, the storage unit 105 may store various signals, messages, and data received from other entities by the communication unit 103.

The storage unit 103 (or memory) may include, for example, at least one of an internal memory and an external memory. The internal memory may include, for example, at least one of a volatile memory (e.g., DRAM, SRAM, or SDRAM) or a nonvolatile memory (e.g., one time programmable ROM (OTPROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, flash memory, hard drive, or solid state drive (SSD)). The external memory may include, for example, at least one of a flash drive, a compact flash (CF), a secure digital (SD), a micro-SD, a mini-SD, an extreme digital (xD), a multi-media card (MMC), or a memory stick. The external memory may be functionally or physically connected to the electronic device 100 through various interfaces.

The controller 101 controls the overall operation of the electronic device 100 and, in particular, controls the data providing operation applying the adaptive delay according to embodiments of this disclosure. The controller 101 may receive signals, messages, and data through the communication unit 103. In addition, the controller 101 may write data to the storage unit 105 and read data from the storage unit 105. For this purpose, the controller 101 may include, or may be part of, at least one processor, a microprocessor, or a microcontroller.

According to an embodiment, the communication unit 103 may download first data, which is a fragment of streaming content, from an external device (e.g., a streaming server), and the storage unit 105 may store the downloaded first data. The controller 101 may determine a data provision time interval which is an interval of time at which each of a plurality of data constituting the streaming content is provided to a streaming application through a proxy module. In addition, when the streaming application requests the first data, the controller 101 may provide the stored first data to the streaming application through the proxy module, based on the determined data provision time interval.

In addition, when providing the first data to the streaming application, the controller 101 may provide the first data to the streaming application after delay for a predetermined time, based on the determined data provision time interval.

In addition, when providing the first data to the streaming application, the controller 101 may provide the stored first data to the streaming application, based on a data request time interval which is an interval between a request time for the first data and a request time for second data which is a fragment next to the first data in the streaming content.

In addition, when providing the first data to the streaming application, the controller 101 may compare the data provision time interval with the data request time interval and, based on a comparison result, provide the stored first data to the streaming application.

In addition, if the data request time interval is equal to or greater than the data provision time interval, the controller 101 may immediately provide the stored first data to the streaming application.

In addition, if the data request time interval is smaller than the data provision time interval, the controller 101 may delay the first data for a predetermined time and provide the delayed first data to the streaming application. In this case, the predetermined time may be a difference between the data provision time interval and the data request time interval.

In addition, the data provision time interval may decrease as a bit rate of data requested to the proxy module by the streaming application increases.

In addition, the data provision time interval may increase as a data providing rate at which the proxy module provides data to the streaming application increases.

In addition, the data provision time interval may decrease as a playback time of data provided to the streaming application by the proxy module increases.

Although FIG. 6 illustrates the electronic device 100 including the controller 101, the communication unit 103, and the storage unit 105, the electronic device 100 may further include any other element.

FIG. 7 is a flow diagram illustrating a method for providing data to a streaming application in the adaptive streaming service according to an embodiment of the present disclosure.

At operation 701, the electronic device 100 may determine a data provision time interval which is an interval of time at which each of a plurality of data constituting streaming content is provided to the streaming application 110 via the proxy module 120.

At operation 703, the electronic device 100 may download first data, which is a fragment of the streaming content, from the external device 150 and store the first data. Alternatively, the operation 703 may be performed in advance before the operation 701. That is, after downloading and storing the first data, the electronic device 100 may determine the data provision time interval.

At operation 705, the electronic device 100 may determine whether the streaming application 110 requests the first data. Alternatively, the operation 705 may be performed in advance before the operation 701. That is, after determining whether the streaming application 110 requests the first data, the electronic device 100 may determine the data provision time interval.

If it is determined that the streaming application 110 requests the first data, the electronic device 100 may provide the stored first data to the streaming application 110 via the proxy module 120 at operation 707, based on the determined data provision time interval. On the other hand, if the streaming application 110 does not request the first data, the electronic device 100 may continuously monitor whether the streaming application 110 requests the first data.

According to one embodiment, when the streaming application 110 requests the first data, the electronic device 100 may provide the first data to the streaming application 110 after delay for a predetermined time, based on the determined data provision time interval.

According to another embodiment, when the streaming application 110 requests the first data, the electronic device 100 may provide the stored first data to the streaming application 110, based on the determined data provision time interval and based on a data request time interval which is an interval between a request time for the first data and a request time for second data which is a fragment next to the first data in the streaming content.

FIG. 8 is a flow diagram illustrating a method for providing data to a streaming application in the adaptive streaming service according to another embodiment of the present disclosure.

At operation 801, the electronic device 100 may determine a data provision time interval which is an interval of time at which each of a plurality of data constituting streaming content is provided to the streaming application 110 via the proxy module 120.

At operation 803, the electronic device 100 may download first data, which is a fragment of the streaming content, from the external device 150 and store the first data.

At operation 805, the electronic device 100 may determine whether the streaming application 110 requests the first data.

If it is determined that the streaming application 110 requests the first data, the electronic device 100 may compare the determined data provision time interval with a data request time interval at operation 807. In this case, the data request time interval may be an interval between a request time for the first data and a request time for second data which is a fragment next to the first data in the streaming content.

As a comparison result, the electronic device 100 may determine at operation 809 whether the data request time interval is equal to or greater than the data provision time interval.

If it is determined that the data request time interval is equal to or greater than the data provision time interval, the electronic device 100 may immediately provide the stored first data to the streaming application 110 at operation 811.

On the other hand, if the data request time interval is smaller than the data provision time interval, the electronic device 100 may provide the stored first data to the streaming application 110 after delay for a predetermined time at operation 813.

At least a portion of the apparatus (e.g., modules or functions thereof) or method (e.g., operations) according to embodiments of the present disclosure may be implemented as instructions stored in the form of a program module in non-transitory computer readable media. When the instructions are executed by the processor, the processor may perform functions corresponding to the instructions.

The program may be stored in a computer-readable non-transitory recording medium, and then read and executed by a computer, thereby implementing embodiments of the present disclosure.

The non-transitory recording medium refers to a specific medium that semi-permanently stores data and can be read by an apparatus, and may include a volatile or nonvolatile memory, such as a register, a cache, or a buffer, which temporarily stores data for calculation or transmission.

On the other hand, transitory transmission media such as signals and currents do not correspond to the non-transitory recording media.

Specifically, the above-mentioned program may be provided by being stored in a non-transitory readable recording medium such as CD, DVD, hard disk, Blu-ray disk, USB, internal memory, memory card, ROM or RAM.

In addition, the above-mentioned program may be registered in a server by a seller thereof, stored in a memory of the server, and transmitted to a terminal connected to the server via a network.

According to an embodiment, a computer-readable non-transitory recording medium may store a program that enables an electronic device to perform, in an adaptive streaming service, an operation of determining a data provision time interval which is an interval of time at which each of a plurality of data constituting streaming content is provided to a streaming application through a proxy module, an operation of downloading and storing first data, which is a fragment of the streaming content, from an external device, and an operation of, when the streaming application requests the first data, providing the stored first data to the streaming application through the proxy module, based on the determined data provision time interval.

While this disclosure contains many specific implementation details, these should not be construed as limitations on the scope of the disclosure or of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of particular disclosure.

INDUSTRIAL APPLICABILITY

The present invention can be used in a field of providing a streaming service. 

The invention claimed is:
 1. A method for providing an adaptive streaming service data to a streaming application in an electronic device, the method comprising operations of: determining a data provision time interval which is an interval of time at which each of a plurality of data constituting streaming content is provided to the streaming application in the electronic device through a proxy module included in the electronic device; downloading and storing first data, which is a fragment of the streaming content, from an external device to a buffer of the electronic device; when the streaming application requests the first data, identifying, by the proxy module, a data request time interval for providing to the streaming application; providing, by the proxy module, the stored first data to the streaming application through the proxy module, after delay for a predetermined time, if the data request time interval is shorter than the data provision time interval; and immediately providing, by the proxy module, the stored first data in the buffer to the streaming application, if the data request time interval is equal to or longer than the data provision time interval.
 2. The method of claim 1, wherein the data provision time interval decreases as a bit rate of data requested to the proxy module by the streaming application increases.
 3. The method of claim 1, wherein the data provision time interval increases as a data providing rate at which the proxy module provides data to the streaming application increases.
 4. The method of claim 1, wherein the data provision time interval decreases as a playback time of data provided to the streaming application by the proxy module increases.
 5. An electronic device for providing an adaptive streaming service data to a streaming application, the electronic device comprising: a communication unit configured to download, from an external device, first data which is a fragment of streaming content; a storage unit configured to store the downloaded first data to a buffer of the electronic device; and a controller configured to: determine a data provision time interval which is an interval of time at which each of a plurality of data constituting streaming content is provided to a streaming application included in the electronic device through a proxy module included in the electronic device, when the streaming application requests the first data, identify, by the proxy module, a data request time interval for providing to the streaming application, provide, by the proxy module, the stored first data to the streaming application through the proxy module, after delay for a predetermined time, if the data request time interval is shorter than the data provision time interval, and immediately provide, by the proxy module, the stored first data in the buffer to the streaming application, if the data request time interval is equal to or longer than the data provision time interval.
 6. The electronic device of claim 5, wherein the predetermined time is a difference between the data provision time interval and the data request time interval.
 7. The electronic device of claim 5, wherein the data provision time interval decreases as a bit rate of data requested to the proxy module by the streaming application increases.
 8. The electronic device of claim 5, wherein the data provision time interval increases as a data providing rate at which the proxy module provides data to the streaming application increases.
 9. A computer-readable non-transitory recording medium storing a program that enables an electronic device to provide an adaptive streaming service data to a streaming application in the electronic device, operations of: determining a data provision time interval which is an interval of time at which each of a plurality of data constituting streaming content is provided to the streaming application in the electronic device through a proxy module included in the electronic device; downloading and storing first data, which is a fragment of the streaming content, from an external device to a buffer of the electronic device; when the streaming application requests the first data, identifying, by the proxy module, a data request time interval for providing to the streaming application; providing, by the proxy module, the stored first data to the streaming application through the proxy module, after delay for a predetermined time, if the data request time interval is shorter than the data provision time interval; and immediately providing, by the proxy module, the stored first data in the buffer to the streaming application, if the data request time interval is equal to or longer than the data provision time interval.
 10. The method of claim 1, wherein providing the stored first data after the delay for a predetermined time comprises providing the stored first data to the streaming application after a delay corresponding to a difference between the determined data provision time interval and the data request time interval.
 11. The method of claim 1, wherein the data provision time interval is determined as a Constant Delay according to ${{{Constant}\mspace{14mu}{Delay}} = {\alpha - \frac{{Bitrate}*{Duration}}{proxyBW} + {marginalDelay}}},$ wherein α is an interval of a request time at which the streaming application sends a request for data to the proxy module, proxyBW is a data provision rate when the proxy module provides data to the streaming application, Bitrate is a bit rate based on a transmission rate per time of data requested to the proxy module by the streaming application, Duration is a data playback time for which data provided to the streaming application by request is actually played, and marginalDelay is a time for data processing at the electronic device.
 12. The electronic device of claim 5, wherein the data provision time interval is determined as a Constant Delay according to ${{{Constant}\mspace{14mu}{Delay}} = {\alpha - \frac{{Bitrate}*{Duration}}{proxyBW} + {marginalDelay}}},$ wherein α is an interval of a request time at which the streaming application sends a request for data to the proxy module, proxyBW is a data provision rate when the proxy module provides data to the streaming application, Bitrate is a bit rate based on a transmission rate per time of data requested to the proxy module by the streaming application, Duration is a data playback time for which data provided to the streaming application by request is actually played, and marginalDelay is a time for data processing at the electronic device. 